package com.av.db.dataobjects;

import java.io.Serializable;
import java.util.Set;

/**
 * Tarjeta vehicular para uso interno del sistema
 * 
 * @author Victor J Morales R
 * 
 */
public class Tarjeta implements Serializable {

	private static final long serialVersionUID = 1L;

	public static final String ID = "id";
	public static final String USUARIO = "usuario";
	public static final String CODIGO = "codigo";
	public static final String NUM_PLACA = "numPlaca";
	public static final String ACTIVO = "activo";

	// Miembros

	private int id;
	private Usuario usuario;
	private String codigo;
	private String numPlaca;
	private boolean activo;

	private Set<Abono> abonos;
	private Set<Aclaracion> aclaraciones;
	private Set<EntradaSalida> entradasSalidas;
	private Set<Adeudo> adeudos;

	// Propiedades
	/**
	 * Obtiene el identificador de la tabla
	 */
	public int getId() {
		return id;
	}// getId

	/**
	 * Asigna el identificador de la tabla
	 * 
	 * @param id
	 */
	@SuppressWarnings("unused")
	private void setId(int id) {
		this.id = id;
	}// setId

	/**
	 * Obtiene el usuario al que pertenece la tarjeta
	 * 
	 * @return
	 */
	public Usuario getUsuario() {
		return usuario;
	}// getUsuario

	/**
	 * Asigna el usuario al que pertenece la tarjeta
	 * 
	 * @param usuario
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}// setUsuario

	/**
	 * Obtiene el codigo alfanumerico de la tarjeta vehicular
	 * 
	 * @return
	 */
	public String getCodigo() {
		return codigo;
	}// getCodigo

	/**
	 * Asigna el codigo alfanumerico de la tarjeta vehicular
	 * 
	 * @param codigo
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}// setCodigo

	/**
	 * Obtiene el numero de la placa del vehiculo registrado
	 * 
	 * @return
	 */
	public String getNumPlaca() {
		return numPlaca;
	}// getNumPlaca

	/**
	 * Asigna el numero de la placa del vehiculo registrado
	 * 
	 * @param numPlaca
	 */
	public void setNumPlaca(String numPlaca) {
		this.numPlaca = numPlaca;
	}// setNumPlaca

	/**
	 * Obtiene el estatus de la tarjeta del vehiculo
	 * 
	 * @return
	 */
	public boolean isActivo() {
		return activo;
	}// isActivo

	/**
	 * Asigna el estatus de la tarjeta del vehiculo
	 * 
	 * @param activo
	 */
	public void setActivo(boolean activo) {
		this.activo = activo;
	}// setActivo

	/**
	 * Obtiene los abonos o montos a favor cargados a la tarjeta vehicular
	 * 
	 * @return
	 */
	public Set<Abono> getAbonos() {
		return abonos;
	}// getAbonos

	/**
	 * Asigna los abonos o montos a favor a ser cargados a la tarjeta vehicular
	 * 
	 * @param abonos
	 */
	public void setAbonos(Set<Abono> abonos) {
		this.abonos = abonos;
	}// setAbonos

	/**
	 * Obtiene las aclaraciones realizadas sobre la tarjeta vehicular
	 * 
	 * @return
	 */
	public Set<Aclaracion> getAclaraciones() {
		return aclaraciones;
	}// getAclaraciones

	/**
	 * Asigna un el conjunto de aclaraciones realizadas sobre la tarjeta
	 * vehicular
	 * 
	 * @param aclaraciones
	 */
	public void setAclaraciones(Set<Aclaracion> aclaraciones) {
		this.aclaraciones = aclaraciones;
	}// setAclaraciones

	/**
	 * Obtiene las entradas o salidas del vehiculo registradas en el sistema
	 * 
	 * @return
	 */
	public Set<EntradaSalida> getEntradasSalidas() {
		return entradasSalidas;
	}// getEntradasSalidas

	/**
	 * Asigna el conjunto de entradas o salidas registradas en el sistema
	 * 
	 * @param entradasSalidas
	 */
	public void setEntradasSalidas(Set<EntradaSalida> entradasSalidas) {
		this.entradasSalidas = entradasSalidas;
	}// setEntradasSalidas

	/**
	 * Obtiene el conjunto de adeudos para la tarjeta vehicular
	 * 
	 * @return
	 */
	public Set<Adeudo> getAdeudos() {
		return adeudos;
	}// getAdeudos

	/**
	 * Asigna el conjunto de adeudos para la tarjeta vehicular
	 * 
	 * @param adeudos
	 */
	public void setAdeudos(Set<Adeudo> adeudos) {
		this.adeudos = adeudos;
	}// setAdeudos

	// Funciones

	public String toString() {
		return this.codigo;
	}// toString

	public boolean equals(Object o) {
		if (o == null || !(o instanceof Tarjeta)) {
			return false;
		}
		return ((Tarjeta) o).getId() == id;
	}// equals

}// Tarjeta